import http from './http'

// 用户注册
export function register(payload) {
  // payload: { name, phone, password }
  return http.post('/user/register', payload)
}

// 更新密码
export function updatePassword(payload) {
  // payload: { name, phone, newPassword }
  return http.put('/user/updatePassword', payload)
}

// 用户登录
export function login(payload) {
  // payload: { name, password }
  return http.post('/user/login', payload)
}

// 根据顾客ID查询顾客信息
export function getCustomerInfoById(customerId) {
  console.log('调用getCustomerInfoById，customerId:', customerId)
  // 确保使用正确的API路径，后端接口为/queryMessage，接收Long类型的customerId参数
  // 确保customerId转换为数字类型以匹配后端的Long类型
  const numericCustomerId = Number(customerId);
  console.log('转换后的数字类型customerId:', numericCustomerId)
  return http.get('/customer/queryMessage', { params: { customerId: numericCustomerId } })
}

// 更新顾客信息
export function updateCustomerInfo(customerUpdateDTO) {
  console.log('调用updateCustomerInfo，更新数据:', customerUpdateDTO)
  // 确保id转换为数字类型以匹配后端的Long类型
  if (customerUpdateDTO && customerUpdateDTO.id) {
    customerUpdateDTO.id = Number(customerUpdateDTO.id);
  }
  // 调用后端updateMessage接口，使用PUT方法
  return http.put('/customer/updateMessage', customerUpdateDTO)
}

// 获取顾客订单数量统计
export function getOrderNumber(customerId) {
  const numericCustomerId = Number(customerId)
  return http.get('/orders/getOrderNumber', { params: { customerId: numericCustomerId } })
}

// 获取顾客订单列表
export function getCustomerOrder(pageNum, pageSize, customerId, status) {
  const params = {
    pageNum,
    pageSize,
    customerId: Number(customerId)
  }
  
  // 如果status不是'all'，则添加status参数
  if (status !== 'all') {
    params.status = status
  }
  
  return http.get('/orders/getCustomerOrder', { params })
}

// 商品图片上传
export const uploadProductImage = (file) => {
  const formData = new FormData()
  formData.append('file', file)

  return http.post('/product/uploadImages', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

// 分页查询商品列表
export function getProductList(params) {
  // params: { pageNum, pageSize, sellerId }
  return http.get('/product/query', { params })
}

// 根据商品ID查询详情
export function getProductById(productId) {
  return http.get(`/product/query/${productId}`)
}

// 关键字搜索商品
export function searchProducts(params) {
  // params: { pageNum, pageSize, keyword }
  return http.get('/product/queryBySearch', { params })
}

// 根据分类查询商品
export function getProductsByCategory(params) {
  // params: { pageNum, pageSize, categoryId }
  return http.get('/product/queryByCategoryId', { params })
}

// 添加商品
export function addProduct(productData) {
  // productData: ProductCreateDTO
  return http.post('/product/addProduct', productData)
}

// 更新商品
export function updateProduct(productData) {
  // productData: ProductUpdateDTO
  console.log('=== API调用 - 更新商品请求 ===')
  console.log('请求地址:', '/product/updateProduct')
  console.log('请求方法:', 'PUT')
  console.log('请求数据:', JSON.stringify(productData, null, 2))
  return http.put('/product/updateProduct', productData)
}

// 根据商品ID查询商品详细信息
export function getProductMessageById(productId) {
  return http.get(`/product/queryMessageById/${productId}`)
}
// 根据商品ID查询SKU列表
export function getSkusByProductId(productId) {
  return http.get(`/product/queryByPId/${productId}`)
}

// 添加购物车
export function addToCart(cartAddDTO) {
  // cartAddDTO: { customerId, skuId, quantity }
  // 确保customerId转换为数字类型以匹配后端的Long类型
  if (cartAddDTO && cartAddDTO.customerId) {
    cartAddDTO.customerId = Number(cartAddDTO.customerId);
  }
  return http.post('/cart/add', cartAddDTO)
}

// 根据顾客ID查询购物车列表
export function getCartListByCustomerId(customerId, pageNum = 1, pageSize = 10) {
  // 确保customerId转换为数字类型以匹配后端的Long类型
  const numericCustomerId = Number(customerId);
  return http.get(`/cart/queryByCId/${numericCustomerId}`, {
    params: { pageNum, pageSize }
  })
}

/*// 删除购物车商品
export function deleteCartItems(ids) {
  // ids: 购物车商品ID数组
  // 确保所有ID都转换为数字类型
  const numericIds = ids.map(id => Number(id));
  return http.delete('/cart/deleteByCIds', {
    params: { ids: numericIds.join(',') }
  })
}*/

// 删除购物车商品
export function deleteCartItems(ids) {
  // ids: 购物车商品ID数组
  // 确保所有ID都转换为数字类型
  const numericIds = ids.map(id => Number(id));
  return http.put('/cart/deleteByCIds', null, {
    params: { ids: numericIds.join(',') }
  });
}

// 更新购物车商品
export function updateCartItem(cartUpdateDTO) {
  // cartUpdateDTO: { id, skuId, quantity }
  // 确保所有ID都转换为数字类型
  if (cartUpdateDTO) {
    if (cartUpdateDTO.id) {
      cartUpdateDTO.id = Number(cartUpdateDTO.id);
    }
    if (cartUpdateDTO.skuId) {
      cartUpdateDTO.skuId = Number(cartUpdateDTO.skuId);
    }
  }
  return http.put('/cart/update', cartUpdateDTO)
}

// 更新顾客头像
export function updateCustomerAvatar(formData) {
  console.log('调用updateCustomerAvatar上传头像')
  // 确保customerId是数字类型
  const customerId = formData.get('customerId')
  if (customerId) {
    // 移除旧的customerId并添加数字类型的customerId
    formData.delete('customerId')
    formData.append('customerId', Number(customerId))
  }
  // 使用PUT方法以匹配后端的@PutMapping
  return http.put('/customer/updateAvatar', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

// 添加商品规格
export function addProductSku(skuData) {
  return http.post('/product/addSku', skuData)
}

// 更新商品规格
export function updateProductSku(skuData) {
  return http.put('/product/update', skuData)
}

// 查看商品详情
export function getProductDetail(productId) {
  return http.get(`/product/queryMessageById/${productId}`)
}

// 获取公共分类列表
export function getPublicCategory() {
  return http.get('/category/getPublicCategory')
}

// 获取商家分类列表
export function getSellerCategory(sellerId) {
  return http.get(`/category/getSellerCategory/${sellerId}`)
}

// 更新商品状态（上下架）
export function updateProductStatus(id, status) {
  // id: 商品ID, status: 状态（1-上架，0-下架）
  return http.put('/product/updateStatus', null, {
    params: { id, status }
  })
}
